/**
 * 用户名
 * @param rule 验证规则（不含特殊字符）
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export const validateUsername = (rule, value, callback) => {
  var reg = /^[a-zA-Z0-9_\u4e00-\u9fa5]{1,16}$/;
  if (value.length > 16) {
    callback(new Error('长度不能超过16个字符'));
  } else if (!reg.test(value)) {
    callback(new Error('仅支持大小写英文、中文和下划线_'));
  } else {
    callback();
  }
};
/**
 * 密码格式验证
 * @param rule 验证规则（不少于6位）
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export const validatePassword = (rule, value, callback) => {
  // let reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>,.\/]).{8,16}/;
  // let reg = /^(?!\D+$)(?![^a-zA-Z]+$)\S{6,20}$/
  let reg = /^[a-zA-Z0-9_\u4e00-\u9fa5]{1,16}$/
  if (!reg.test(value)) {
    callback(new Error('密码长度不得小于6位,且必须包含数字字母'));
  } else {
    callback();
  }
};
/**
 * 密码格式验证
 * @param rule 验证规则（不少于6位）
 * @param value 需要验证的值
 * @param callback 回调函数
 */
 export const adminPassword = (rule, value, callback) => {
  let reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>,.\/]).{8,16}/;
  if (!reg.test(value)) {
    callback(new Error('密码长度不得小于6位,且必须包含数字字母和特殊字符'));
  } else {
    callback();
  }
};

/**
 * 手机号码格式验证
 * @param rule 验证规则
 * @param value 需要验证的值
 * @param callback 回调函数
 */
export const validateMobile = (rule, value, callback) => {
  var reg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
  if (!reg.test(value)) {
    callback(new Error('手机号格式错误'));
  } else {
    callback();
  }
};

/**
 * 身份证号码格式验证
 * @param rule 验证规则（是否满足18位）
 * @param value 需要验证的值
 * @param callback 回调函数
 */
//  身份证号
export const validateIDCard = (rule, value, callback) => {
  const reg = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
  if (!reg.test(value)) {
    callback(new Error('身份证号码格式错误'));
  } else {
    callback();
  }
};
//  统一社会信用代码
export const unifiedCreditCode = (rule, value, callback) => {
  const reg = /[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g;
  if (!reg.test(value)) {
    callback(new Error('统一社会信用代码'));
  } else {
    callback();
  }
};
//  身份证号+统一社会信用代码
export const IDCreditCode = (rule, value, callback) => {
  if (value.length == 18) {
    const ID = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
    const CreditCode = /[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}$/g;
    const texts = /^[0-9]+.?[0-9]*$/
    if (ID.test(value) || CreditCode.test(value)) {
      callback();
    } else {
      callback(new Error('统一社会信用代码或身份证号码输入有误'));
    }
    // if (!ID.test(value)) {
    //   callback(new Error('身份证号码输入有误'));
    // } else {
    //   callback();
    // }

    // if (!CreditCode.test(value)) {
    //   callback(new Error('统一社会信用代码输入有误'));
    // } else {
    //   callback();
    // }

    // if (value.charAt(0)!=9) {
    //   if (!ID.test(value)) {
    //     callback(new Error('身份证号码输入有误'));
    //   } else {
    //     callback();
    //   }
    // } else {
    //   if (!CreditCode.test(value)) {
    //     callback(new Error('统一社会信用代码输入有误'));
    //   } else {
    //     callback();
    //   }
    // }
  } else {
    callback(new Error('统一社会信用代码或身份证号码输入有误'));
  }

};
